@爆米花
2年前 提问
1个回答
软件CERT安全编码时需要注意什么
上官雨宝
2年前
软件CERT安全编码时需要注意以下方面:
验证输入:对于不可信任数据源的输入应当进行验证。正确的输入验证能减少大量软件漏洞。这些数据源包括命令行参数、网络接口、环境变量,以及用户文件。
留意编译器警告:应采用实现了安全特性的编译器,并启用编译器的警告和错误提示功能。不仅要处理和解决代码中的错误,而且也应处理和解决所有的警告,确保不将任何一个警告带入到程序的最终编译版本中。
安全策略的架构和设计:创建一个软件架构来实现和增强安全策略。例如,如果系统在不同的时间需要不同的权限,则考虑将系统分成不同的互相通信的子系统,每个系统拥有适当的权限。
保持简单性:程序越复杂,控制会越复杂,就会增加代码出错的可能。要尽量使程序短小精悍,代码中的每个函数应该具有明确的功能,在编写函数代码时,应在保持功能完整实现的前提下控制该函数内代码量的多少。对于复杂的功能,应将该功能分解为更小、更简单的功能,确保软件仅包含所要求或规定的功能。
坚持最小权限原则:这是一个通用的安全原则,这里从编码角度再次重申。每个进程拥有完成工作所需的最小权限,任何权限的拥有时间要尽可能短,以阻止攻击者利用权限提升执行任意代码的机会。
清洁发送给其他系统的数据:清洁所有发送给子系统的数据,以免攻击者实施注入类等攻击。输入验证后再次净化数据是纵深防御的体现。
使用有效的质量保证技术:好的质量保证技术能有效地发现和消除漏洞。渗透测试、模糊测试及源代码审计可以作为有效的质量保证措施。独立的安全审查能够促成更安全的系统,外部审查人员能带来独立的观点。
采用安全编码标准:为开发语言和平台设计安全编码标准,并应用这些标准。多数漏洞很容易通过使用一些规范编码的方法来避免,例如对代码进行规范缩进显示,可以有效避免出现遗漏错误分支处理的情况。